NOTE: PROCEDURE PRINTTO used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

3    
4    DM "log; clear; ";
5    DM 'odsresults; clear';
6    
7    %global projectrootdirectory;
8    %let projectrootdirectory=C:/Users/hpham13/Projects/mf_activism/empirical;
9    
10   *Creates your local Libraries;
11   libname rawdata "&projectrootdirectory./0_input/original";
NOTE: Libref RAWDATA was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\Projects\mf_activism\empirical\0_input\original
12   libname rawdata2 "&projectrootdirectory./0_input/original/finaldatadepvars";
NOTE: Libref RAWDATA2 was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: 
      C:\Users\hpham13\Projects\mf_activism\empirical\0_input\original\finaldatadepvars
13   libname save "&projectrootdirectory./0_input/final";
NOTE: Libref SAVE was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\Projects\mf_activism\empirical\0_input\final
14   
15   %let datadirectory= C:/Users/hpham13/data ;
16   
17   libname lnk "&datadirectory./Linking_tables/";
NOTE: Libref LNK was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\Linking_tables
18   libname ceo "&datadirectory./ceo/";
NOTE: Libref CEO was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\ceo
19   libname activism "&datadirectory./activism/" ;
NOTE: Libref ACTIVISM was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\activism
20   libname comp "&datadirectory./compustat/fundq/";
NOTE: Libref COMP was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\compustat\fundq
21   libname compa "&datadirectory./compustat/funda/";
NOTE: Libref COMPA was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\compustat\funda
22   libname ibes "&datadirectory./IBES";
NOTE: Libref IBES was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\hpham13\data\IBES
23   
24   * include some macros;
25   %include "&datadirectory./utils/do_over.sas";
332  %include "&datadirectory./utils/ff48.sas";
404  %include "&datadirectory./utils/ff49.sas";
477  %include "&datadirectory./utils/ff12.sas";
516  %include "&datadirectory./utils/winsorize.sas";
604   %include "&datadirectory./utils/lags.sas";
783   
784   
785   
786   /* ************************************************************************ */
787   /* ***********************  PART 1: IMPORT DATA  ************************** */
788   /* ************************************************************************ */
789   %let fname  = 111624_mff_1;         * cutoff 1.0% ;
790   %let fname2 = 111624_mff_2;         * cutoff 2.0% ;
791   %let fname3 = 111624_mff_3;         * cutoff 3.0% ;
792   %let fname4 = 111624_mff_5;         * cutoff 5.0% ;
793   %let fname5 = 111624_mff_stdized;   * cutoff 1.0% ;
794   %let fname6 = 111624_mff_1n;        * cutoff 1.0% Topx ;
795   %let fname7 = 111624_mff_4;         * cutoff 4.0% ;
796   
797   * cutoff 1%;
798   data stockpick; set rawdata2.stkpick&fname.;
799       label relstkpick1="RelInformedTrade cutoff 1%" ;
800   run;

NOTE: There were 240430 observations read from the data set RAWDATA2.STKPICK111624_MFF_1.
NOTE: The data set WORK.STOCKPICK has 240430 observations and 26 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.03 seconds
      

801   
802   * cutoff 2%;
803   data stockpick2; set rawdata2.stkpick&fname2.;
804       keep   gvkey rdq relstkpick1 avg_stkpick1_all stkpick1_large stkpick1_small mfor
804 ! numinstlarge  avgmforlarge summforlarge numinstsmall avgmforsmall summforsmall ;
805       label  relstkpick1="RelInformedTrade cutoff 2%" ;
806       rename relstkpick1      = relstkpick1_2pct;
807       rename avg_stkpick1_all = avg_stkpick1_all_2pct;
808       rename stkpick1_large   = stkpick1_large_2pct;
809       rename stkpick1_small   = stkpick1_small_2pct;
810       rename mfor = mfor_2pct;
811       rename numinstlarge = numinstlarge_2pct;
812       rename avgmforlarge = avgmforlarge_2pct;
813       rename summforlarge = summforlarge_2pct;
814       rename numinstsmall = numinstsmall_2pct;
815       rename avgmforsmall = avgmforsmall_2pct;
816       rename summforsmall = summforsmall_2pct;
817   run;

NOTE: There were 185704 observations read from the data set RAWDATA2.STKPICK111624_MFF_2.
NOTE: The data set WORK.STOCKPICK2 has 185704 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

818   
819   * cutoff 3%;
820   data stockpick3; set rawdata2.stkpick&fname3.;
821       keep   gvkey rdq relstkpick1 avg_stkpick1_all stkpick1_large stkpick1_small mfor
821 ! numinstlarge  avgmforlarge summforlarge numinstsmall avgmforsmall summforsmall;
822       label  relstkpick1="RelInformedTrade cutoff 3%" ;
823       rename relstkpick1      = relstkpick1_3pct;
824       rename avg_stkpick1_all = avg_stkpick1_all_3pct;
825       rename stkpick1_large   = stkpick1_large_3pct;
826       rename stkpick1_small   = stkpick1_small_3pct;
827       rename mfor = mfor_3pct;
828       rename numinstlarge = numinstlarge_3pct;
829       rename avgmforlarge = avgmforlarge_3pct;
830       rename summforlarge = summforlarge_3pct;
831       rename numinstsmall = numinstsmall_3pct;
832       rename avgmforsmall = avgmforsmall_3pct;
833       rename summforsmall = summforsmall_3pct;
834   run;

NOTE: There were 138852 observations read from the data set RAWDATA2.STKPICK111624_MFF_3.
NOTE: The data set WORK.STOCKPICK3 has 138852 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

835   
836   * cutoff 5%;
837   data stockpick4; set rawdata2.stkpick&fname4.;
838       keep   gvkey rdq relstkpick1 avg_stkpick1_all stkpick1_large stkpick1_small mfor
838 ! numinstlarge  avgmforlarge summforlarge numinstsmall avgmforsmall summforsmall ;
839       label  relstkpick1="RelInformedTrade cutoff 5%" ;
840       rename relstkpick1      = relstkpick1_5pct;
841       rename avg_stkpick1_all = avg_stkpick1_all_5pct;
842       rename stkpick1_large   = stkpick1_large_5pct;
843       rename stkpick1_small   = stkpick1_small_5pct;
844       rename mfor = mfor_5pct;
845       rename numinstlarge = numinstlarge_5pct;
846       rename avgmforlarge = avgmforlarge_5pct;
847       rename summforlarge = summforlarge_5pct;
848       rename numinstsmall = numinstsmall_5pct;
849       rename avgmforsmall = avgmforsmall_5pct;
850       rename summforsmall = summforsmall_5pct;
851   run;

NOTE: There were 62079 observations read from the data set RAWDATA2.STKPICK111624_MFF_5.
NOTE: The data set WORK.STOCKPICK4 has 62079 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds
      

852   proc sort nodupkey; by gvkey rdq; run;

NOTE: There were 62079 observations read from the data set WORK.STOCKPICK4.
NOTE: 334 observations with duplicate key values were deleted.
NOTE: The data set WORK.STOCKPICK4 has 61745 observations and 13 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

853   
854   * Standardized Informed Trade;
855   data stockpick5; set rawdata2.stkpick&fname5.;
856       keep  gvkey rdq relstkpick4 avg_stkpick4_all stkpick4_large stkpick4_small ;
857       label relstkpick4="RelInformedTrade Stdized" ;
858   run;

NOTE: There were 240430 observations read from the data set RAWDATA2.STKPICK111624_MFF_STDIZED.
NOTE: The data set WORK.STOCKPICK5 has 240430 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.00 seconds
      

859   proc sort nodupkey; by gvkey rdq; run;

NOTE: There were 240430 observations read from the data set WORK.STOCKPICK5.
NOTE: 1887 observations with duplicate key values were deleted.
NOTE: The data set WORK.STOCKPICK5 has 238543 observations and 6 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.04 seconds
      cpu time            0.09 seconds
      

860   
861   * Add TopX ownership data ;
862   data stockpick6; set rawdata2.stkpick&fname6.;
863       keep  gvkey rdq MFOR_top1 MFOR_top2 MFOR_top3 MFOR_top4 MFOR_top5 MFOR_top1_cut
863 ! MFOR_top2_cut MFOR_top3_cut MFOR_top4_cut MFOR_top5_cut;
864   run;

NOTE: There were 240430 observations read from the data set RAWDATA2.STKPICK111624_MFF_1N.
NOTE: The data set WORK.STOCKPICK6 has 240430 observations and 12 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds
      

865   proc sort nodupkey; by gvkey rdq; run;

NOTE: There were 240430 observations read from the data set WORK.STOCKPICK6.
NOTE: 1887 observations with duplicate key values were deleted.
NOTE: The data set WORK.STOCKPICK6 has 238543 observations and 12 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.05 seconds
      cpu time            0.06 seconds
      

866   
867   * cutoff 4%;
868   data stockpick7; set rawdata2.stkpick&fname7.;
869       keep   gvkey rdq relstkpick1 avg_stkpick1_all stkpick1_large stkpick1_small /*mfor*/
869 ! numinstlarge  avgmforlarge summforlarge numinstsmall avgmforsmall summforsmall;
870       label  relstkpick1="RelInformedTrade cutoff 4%" ;
871       rename relstkpick1      = relstkpick1_4pct;
872       rename avg_stkpick1_all = avg_stkpick1_all_4pct;
873       rename stkpick1_large   = stkpick1_large_4pct;
874       rename stkpick1_small   = stkpick1_small_4pct;
875       *rename mfor = mfor_4pct;
876       rename numinstlarge = numinstlarge_4pct;
877       rename avgmforlarge = avgmforlarge_4pct;
878       rename summforlarge = summforlarge_4pct;
879       rename numinstsmall = numinstsmall_4pct;
880       rename avgmforsmall = avgmforsmall_4pct;
881       rename summforsmall = summforsmall_4pct;
882   run;

NOTE: There were 99450 observations read from the data set RAWDATA2.STKPICK111624_MFF_4.
NOTE: The data set WORK.STOCKPICK7 has 99450 observations and 12 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

883   proc sort nodupkey; by gvkey rdq; run;

NOTE: There were 99450 observations read from the data set WORK.STOCKPICK7.
NOTE: 532 observations with duplicate key values were deleted.
NOTE: The data set WORK.STOCKPICK7 has 98918 observations and 12 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
      

884   
885   * Merge datasets;
886   proc sql;
887       create table stockpick as
888       select a.*, b.*, c.*,d.*,e.*,f.*,g.*
889       from stockpick as a
890       left join stockpick2 as b on a.gvkey=b.gvkey and a.rdq=b.rdq
891       left join stockpick3 as c on a.gvkey=c.gvkey and a.rdq=c.rdq
892       left join stockpick4 as d on a.gvkey=d.gvkey and a.rdq=d.rdq
893       left join stockpick5 as e on a.gvkey=e.gvkey and a.rdq=e.rdq
894       left join stockpick6 as f on a.gvkey=f.gvkey and a.rdq=f.rdq
895       left join stockpick7 as g on a.gvkey=g.gvkey and a.rdq=g.rdq ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
WARNING: Variable gvkey already exists on file WORK.STOCKPICK.
WARNING: Variable rdq already exists on file WORK.STOCKPICK.
NOTE: Table WORK.STOCKPICK created, with 246752 rows and 83 columns.

896   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.66 seconds
      cpu time            0.73 seconds
      

897   
898   * drop unneccessary vars;
899   data stockpick; set stockpick;
900       drop mfor mfor_2pct mfor_3pct mfor_5pct;
901   run;

NOTE: There were 246752 observations read from the data set WORK.STOCKPICK.
NOTE: The data set WORK.STOCKPICK has 246752 observations and 79 variables.
NOTE: DATA statement used (Total process time):
      real time           0.08 seconds
      cpu time            0.07 seconds
      

902   
903   data stockpick; set stockpick;
904       format  relstkpick1 relstkpick1_2pct relstkpick1_3pct relstkpick1_5pct
905               relstkpick2 stkpick1 stkpick2 avg_stkpick1_all avg_stkpick2_all stkpick1_Large
905 ! stkpick1_Small comma8.5;
906   run;

NOTE: There were 246752 observations read from the data set WORK.STOCKPICK.
NOTE: The data set WORK.STOCKPICK has 246752 observations and 79 variables.
NOTE: DATA statement used (Total process time):
      real time           0.08 seconds
      cpu time            0.07 seconds
      

907   proc sort nodupkey; by gvkey rdq; run;

NOTE: There were 246752 observations read from the data set WORK.STOCKPICK.
NOTE: 8209 observations with duplicate key values were deleted.
NOTE: The data set WORK.STOCKPICK has 238543 observations and 79 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.13 seconds
      cpu time            0.18 seconds
      

908   
909   /* 2. merge stacked data and others */
910   data stacked_data; set rawdata.stacked_data_111624; run;

NOTE: There were 50730 observations read from the data set RAWDATA.STACKED_DATA_111624.
NOTE: The data set WORK.STACKED_DATA has 50730 observations and 52 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

911   
912   * make the cohort year;
913   data stacked_data; set stacked_data;
914       if qd_rel = 0 then _cohort_y = fyearq; else _cohort_y = 0;
915   run;

NOTE: There were 50730 observations read from the data set WORK.STACKED_DATA.
NOTE: The data set WORK.STACKED_DATA has 50730 observations and 53 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

916   proc sql;
917       create table stacked_data as
918       select *, max(_cohort_y) as cohort_y label='Cohort Year'
919       from stacked_data
920       group by cid ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.STACKED_DATA created, with 50730 rows and 54 columns.

921   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.04 seconds
      cpu time            0.06 seconds
      

922   data stacked_data; set stacked_data;
923       drop _cohort_y ;
924   run;

NOTE: There were 50730 observations read from the data set WORK.STACKED_DATA.
NOTE: The data set WORK.STACKED_DATA has 50730 observations and 53 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

925   proc sort data=stacked_data; by cid pairid treated qd_rel; run;

NOTE: There were 50730 observations read from the data set WORK.STACKED_DATA.
NOTE: The data set WORK.STACKED_DATA has 50730 observations and 53 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

926   
927   /* Activism campaigns data */
928   data pilot; set activism.ca_details_95_pilot; run;

NOTE: There were 9262 observations read from the data set ACTIVISM.CA_DETAILS_95_PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 147 variables.
NOTE: DATA statement used (Total process time):
      real time           0.06 seconds
      cpu time            0.06 seconds
      

929   proc sort data=pilot nodupkey; by  gvkey CAMPAIGN_ID ; run;

NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.PILOT has 9262 observations and 147 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.11 seconds
      cpu time            0.10 seconds
      

930   
931   * check if two campaigns happens during the period of 8 quarters ;
932   proc sort data=pilot;
933       by gvkey ANNOUNCE_DATE;
934   run;

NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 147 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.10 seconds
      cpu time            0.09 seconds
      

935   data pilot; set pilot;
936       by gvkey ;
937       ANNOUNCE_DATE_l = lag(ANNOUNCE_DATE);
938       if first.gvkey then ANNOUNCE_DATE_l=.;
939       format ANNOUNCE_DATE_l YYMMDD10. ;
940       * count the number of quarters;
941       days_diff = intck('day', ANNOUNCE_DATE_l, ANNOUNCE_DATE);
942       if ANNOUNCE_DATE_l = . then days_diff = . ;
943       if days_diff ne . then quarter_diff = days_diff/30 ;
944           else quarter_diff = . ;
945       format quarter_diff comma8.1;
946   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      4328 at 941:17   
NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 150 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.07 seconds
      

947   proc sort data=pilot out=pilot;
948       by gvkey descending ANNOUNCE_DATE;
949   run;

NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 150 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.10 seconds
      cpu time            0.09 seconds
      

950   
951   data pilot;
952       set pilot;
953       by gvkey;
954       retain ANNOUNCE_DATE_f;
955       if first.gvkey then ANNOUNCE_DATE_f = .;
956       ANNOUNCE_DATE_f = lag(ANNOUNCE_DATE);
957       if first.gvkey then ANNOUNCE_DATE_f = .;
958       output;
959   run;

NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 151 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.06 seconds
      

960   
961   data pilot;
962       set pilot;
963       format ANNOUNCE_DATE_f YYMMDD10. ;
964       * count the number of quarters;
965       days_diff_2 = intck('day', ANNOUNCE_DATE, ANNOUNCE_DATE_f);
966       if ANNOUNCE_DATE = . then days_diff_2 = . ;
967       if days_diff_2 ne . then quarter_diff_2 = days_diff_2/30 ;
968           else quarter_diff_2 = . ;
969       format quarter_diff_2 comma8.1;
970   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      4328 at 965:19   
NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 153 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.07 seconds
      

971   proc sort data=pilot out=pilot;
972       by gvkey ANNOUNCE_DATE;
973   run;

NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 153 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.10 seconds
      cpu time            0.10 seconds
      

974   
975   data pilot; set pilot;
976       * count the number of days ;
977       duration  = intck('day', ANNOUNCE_DATE, MEETING_DATE)+1 ;
978       duration2 = intck('day', ANNOUNCE_DATE, END_DATE)+1;
979       duration3 = intck('day', FILING_DATE, MEETING_DATE)+1  ;
980       label duration  = "Ndays btw Announce_date and Meeting_date";
981       label duration2 = "Ndays btw Announce_date and End_date";
982       label duration3 = "Ndays btw Filing_date and Meeting_date";
983   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      5819 at 977:17   5819 at 977:58   1412 at 978:17   1412 at 978:54   5822 at 979:17
      5822 at 979:56   
NOTE: There were 9262 observations read from the data set WORK.PILOT.
NOTE: The data set WORK.PILOT has 9262 observations and 156 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.07 seconds
      

984   
985   proc sql;
986       create table pilot as
987       select *, median(duration) as med_duration, median(duration2) as med_duration2
988       from pilot
989       group by year(ANNOUNCE_DATE)
990       order by gvkey, ANNOUNCE_DATE;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.PILOT created, with 9262 rows and 158 columns.

991   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.22 seconds
      cpu time            0.29 seconds
      

992   
993   * other activism vars;
994   data sharkwatch;set activism.tohai_activists_12032023;run;

NOTE: There were 3023 observations read from the data set ACTIVISM.TOHAI_ACTIVISTS_12032023.
NOTE: The data set WORK.SHARKWATCH has 3023 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

995   proc sort data=sharkwatch nodupkey; by CAMPAIGN_ID; run;

NOTE: There were 3023 observations read from the data set WORK.SHARKWATCH.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.SHARKWATCH has 3023 observations and 5 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

996   
997   * Activist prior experience;
998   data activist_prior_exp; set rawdata.activist_prior_exp; run;

NOTE: There were 2110 observations read from the data set RAWDATA.ACTIVIST_PRIOR_EXP.
NOTE: The data set WORK.ACTIVIST_PRIOR_EXP has 2110 observations and 21 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

999   %let qd = (year(ANNOUNCE_DATE)*4  + qtr(ANNOUNCE_DATE) - 1925*4);
1000  data activist_prior_exp; set activist_prior_exp ;
1001      if ANNOUNCE_DATE ne . then do ;
1002          qd = &qd;
1003      end;
1004  run;

NOTE: There were 2110 observations read from the data set WORK.ACTIVIST_PRIOR_EXP.
NOTE: The data set WORK.ACTIVIST_PRIOR_EXP has 2110 observations and 21 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1005  proc sort data=activist_prior_exp nodupkey; by gvkey year qd; run;

NOTE: There were 2110 observations read from the data set WORK.ACTIVIST_PRIOR_EXP.
NOTE: 227 observations with duplicate key values were deleted.
NOTE: The data set WORK.ACTIVIST_PRIOR_EXP has 1883 observations and 21 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

1006  
1007  /* Merge data */
1008  proc sql;
1009      create table stacked_data2 as
1010      select  a.*, b.*, c.*, d.prior_exp,
1011              d.mean_prior_exp_sic2, d.med_prior_exp_sic2,
1012              d.med_NUMBER_CAMPAIGNS, d.mean_NUMBER_CAMPAIGNS,
1013              d.med_ACTIVIST_THREAT_RATING, d.mean_ACTIVIST_THREAT_RATING
1014      from    stacked_data as a left join pilot as b
1015      on      a.gvkey=b.gvkey and
1016              a.FACTSET_ENTITY_ID=b.FACTSET_ENTITY_ID and
1017              a.CAMPAIGN_ID=b.CAMPAIGN_ID
1018      left join sharkwatch as c
1019      on      a.CAMPAIGN_ID=c.CAMPAIGN_ID
1020      left join activist_prior_exp as d
1021      on      a.gvkey=d.gvkey and a.qd=d.qd ;
WARNING: Variable CAMPAIGN_ID already exists on file WORK.STACKED_DATA2.
WARNING: Variable ANNOUNCE_DATE already exists on file WORK.STACKED_DATA2.
WARNING: Variable FILING_DATE already exists on file WORK.STACKED_DATA2.
WARNING: Variable END_DATE already exists on file WORK.STACKED_DATA2.
WARNING: Variable FACTSET_ENTITY_ID already exists on file WORK.STACKED_DATA2.
WARNING: Variable ENTITY_PROPER_NAME already exists on file WORK.STACKED_DATA2.
WARNING: Variable gvkey already exists on file WORK.STACKED_DATA2.
WARNING: Variable CAMPAIGN_ID already exists on file WORK.STACKED_DATA2.
NOTE: Table WORK.STACKED_DATA2 created, with 50730 rows and 215 columns.

1022  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.41 seconds
      cpu time            1.84 seconds
      

1023  proc sort data=stacked_data2 nodupkey; by cID PairID treated qd_rel ; run;

NOTE: There were 50730 observations read from the data set WORK.STACKED_DATA2.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.STACKED_DATA2 has 50730 observations and 215 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.59 seconds
      cpu time            0.57 seconds
      

1024  
1025  * create the SIC2 ;
1026  data stacked_data2;
1027      set stacked_data2;
1028      sic_num = input(sic, 8.);
1029      sic2 = floor(sic/100);
1030  run;

NOTE: Character values have been converted to numeric values at the places given by: 
      (Line):(Column).
      1029:18   
NOTE: There were 50730 observations read from the data set WORK.STACKED_DATA2.
NOTE: The data set WORK.STACKED_DATA2 has 50730 observations and 217 variables.
NOTE: DATA statement used (Total process time):
      real time           0.39 seconds
      cpu time            0.39 seconds
      

1031  
1032  * count the number of campaigns per sic2-year ;
1033  proc sql;
1034      create table stacked_data2 as
1035      select
1036          a.*, b.number_campaigns_ind, b.avg_campaigns_ind, b.med_campaigns_ind,
1036! b.sd_campaigns_ind,
1037          b.med_activist_threat_rating, b.sum_activist_threat_rating,
1037! b.avg_activist_threat_rating
1038      from stacked_data2 as a
1039      left join (
1040      select distinct CAMPAIGN_ID, sic2, year
1041          , sum( number_campaigns) as number_campaigns_ind label="N campaigns (industry)"
1042          , mean( number_campaigns) as avg_campaigns_ind format comma8.3
1043          , median( number_campaigns) as med_campaigns_ind format comma8.2
1044          , std( number_campaigns) as sd_campaigns_ind format comma8.2
1045          , median(activist_threat_rating) as med_activist_threat_rating format comma8.2
1046          , avg(activist_threat_rating) as avg_activist_threat_rating format comma8.2
1047          , sum(activist_threat_rating) as sum_activist_threat_rating format comma8.2
1048          from stacked_data2
1049          group by sic2, year
1050          having number_campaigns ne . and activist_threat_rating ne .
1051          ) as b
1052      on  a.CAMPAIGN_ID=b.CAMPAIGN_ID and
1053          a.sic2=b.sic2 and
1054          a.year=b.year  ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable med_activist_threat_rating already exists on file WORK.STACKED_DATA2.
NOTE: Table WORK.STACKED_DATA2 created, with 50730 rows and 223 columns.

1055  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.24 seconds
      cpu time            1.40 seconds
      

1056  
1057  
1058  /* ************************************************************************ */
1059  /* ********************  PART 2: MERGE FUNDQ, FUNDA  ********************** */
1060  /* ************************************************************************ */
1061  * Merge stacked data and MFF stock picking ability;
1062  proc sql;
1063      create table Analysis as
1064      select  a.*, b.*
1065      from    stacked_data2 as a left join stockpick as b
1066      on      a.gvkey=b.gvkey and a.rdq=b.rdq ;
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable datadate already exists on file WORK.ANALYSIS.
WARNING: Variable rdq already exists on file WORK.ANALYSIS.
WARNING: Variable qd already exists on file WORK.ANALYSIS.
WARNING: Variable year already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 50730 rows and 297 columns.

1067  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.01 seconds
      cpu time            1.14 seconds
      

1068  proc sort data=Analysis nodupkey; by cID PairID treated gvkey datadate; run;

NOTE: There were 50730 observations read from the data set WORK.ANALYSIS.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.ANALYSIS has 50730 observations and 297 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.63 seconds
      cpu time            0.62 seconds
      

1069  
1070  * handle outliers;
1071  data Analysis; set Analysis;fyear=year(datadate); run;

NOTE: There were 50730 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 50730 observations and 298 variables.
NOTE: DATA statement used (Total process time):
      real time           0.41 seconds
      cpu time            0.42 seconds
      

1072  %winsor(dsetin=work.Analysis, dsetout=work.Analysis, byvar=fyear, vars=relstkpick1
1072! relstkpick1_2pct relstkpick1_3pct, type=trim, pctl=1 99);

NOTE: There were 50730 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.XTEMP has 50730 observations and 298 variables.
NOTE: DATA statement used (Total process time):
      real time           0.36 seconds
      cpu time            0.36 seconds
      


NOTE: There were 50730 observations read from the data set WORK.XTEMP.
NOTE: The data set WORK.XTEMP has 50730 observations and 298 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.64 seconds
      cpu time            0.64 seconds
      

NOTE: Writing HTML Body file: sashtml.htm

NOTE: The data set WORK.XTEMP_PCTL has 28 observations and 7 variables.
NOTE: PROCEDURE UNIVARIATE used (Total process time):
      real time           0.43 seconds
      cpu time            0.34 seconds
      


WARNING: The variable xbyvar in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: There were 50730 observations read from the data set WORK.XTEMP.
NOTE: There were 28 observations read from the data set WORK.XTEMP_PCTL.
NOTE: The data set WORK.ANALYSIS has 49762 observations and 298 variables.
NOTE: DATA statement used (Total process time):
      real time           0.41 seconds
      cpu time            0.39 seconds
      

1073  data Analysis; set Analysis; drop fyear ; run;

NOTE: There were 49762 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 49762 observations and 297 variables.
NOTE: DATA statement used (Total process time):
      real time           0.40 seconds
      cpu time            0.40 seconds
      

1074  proc sql;
1074!           drop table xtemp, xtemp_pctl;
NOTE: Table WORK.XTEMP has been dropped.
NOTE: Table WORK.XTEMP_PCTL has been dropped.
1074!                                         quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds
      

1075  
1076  data fundq_clean;
1077      set rawdata.comp_fundq_clean;
1078      keep gvkey rdq datadate fyearq fyr fqtr be bd ppegtq PnI saleq to dlttq dlcq
1079      oibdpq oiadpq pm ic tacq revq drevq drevadjq ppeq roaq roaq_lag1 me ml bm
1080      atq_lag1 saleq_lag1 rectq_lag1 ibq ibq_lag1 size size_l lvrg_l lvrg seqq ltq niq niq_l
1080!  ;
1081      if atq > 0 and atq_lag1 > 0 ;
1082      size   = log(atq);
1083      size_l = log(atq_lag1);
1084      lvrg_l = bd/atq_lag1;
1085      lvrg   = dlttq/atq;
1086      if lvrg eq . then lvrg = 0 ;
1087  run;

WARNING: The variable niq_l in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      227702 at 1084:16   8651 at 1085:19     
NOTE: There were 1125340 observations read from the data set RAWDATA.COMP_FUNDQ_CLEAN.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 40 variables.
NOTE: DATA statement used (Total process time):
      real time           0.28 seconds
      cpu time            0.28 seconds
      

1088  proc sort data=fundq_clean nodupkey; by gvkey datadate; run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 40 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.27 seconds
      cpu time            0.42 seconds
      

1089  %let winsVars2 = saleq revq ;
1090  %winsor(dsetin=work.fundq_clean, dsetout=work.fundq_clean, byvar=fyearq, vars=&winsVars2,
1090! type=winsor, pctl=1 99);

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: The data set WORK.XTEMP has 1012247 observations and 40 variables.
NOTE: DATA statement used (Total process time):
      real time           0.16 seconds
      cpu time            0.15 seconds
      


NOTE: There were 1012247 observations read from the data set WORK.XTEMP.
NOTE: The data set WORK.XTEMP has 1012247 observations and 40 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.28 seconds
      cpu time            0.48 seconds
      


NOTE: The data set WORK.XTEMP_PCTL has 30 observations and 5 variables.
NOTE: PROCEDURE UNIVARIATE used (Total process time):
      real time           0.75 seconds
      cpu time            0.75 seconds
      


WARNING: The variable xbyvar in the DROP, KEEP, or RENAME list has never been referenced.
NOTE: There were 1012247 observations read from the data set WORK.XTEMP.
NOTE: There were 30 observations read from the data set WORK.XTEMP_PCTL.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 40 variables.
NOTE: DATA statement used (Total process time):
      real time           0.22 seconds
      cpu time            0.21 seconds
      

1091  
1092  * get more fundq vars;
1093  data fundq_add; set comp.fundq_1950_2021;
1094      keep gvkey datadate intanq ;
1095      where datadate>'01JAN1990'd;
1096  run;

NOTE: There were 1441077 observations read from the data set COMP.FUNDQ_1950_2021.
      WHERE datadate>'01JAN1990'D;
NOTE: The data set WORK.FUNDQ_ADD has 1441077 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.30 seconds
      cpu time            0.29 seconds
      

1097  proc sort data=fundq_add nodupkey; by gvkey datadate; run;

NOTE: There were 1441077 observations read from the data set WORK.FUNDQ_ADD.
NOTE: 1238 observations with duplicate key values were deleted.
NOTE: The data set WORK.FUNDQ_ADD has 1439839 observations and 3 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.08 seconds
      cpu time            0.18 seconds
      

1098  proc sort data=fundq_clean nodupkey; by gvkey datadate; run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 40 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.26 seconds
      cpu time            0.42 seconds
      

1099  data fundq_clean;
1100      merge fundq_clean(in=a) fundq_add (in=b);
1101      by gvkey datadate;
1102      if a;
1103  run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: There were 1439839 observations read from the data set WORK.FUNDQ_ADD.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 41 variables.
NOTE: DATA statement used (Total process time):
      real time           0.30 seconds
      cpu time            0.31 seconds
      

1104  
1105  * Create calendar date of fiscal period end in Compustat extract;
1106  data fundq_clean; set fundq_clean;
1107      if (1<=fyr<=5) then date_fyend=intnx('month',mdy(fyr,1,fyearq+1),0,'end');
1108     else if (6<=fyr<=12) then date_fyend=intnx('month',mdy(fyr,1,fyearq),0,'end');
1109     fqenddt=intnx('month',date_fyend,-3*(4-fqtr),'end');
1110     format fqenddt date9.;
1111     drop date_fyend;
1112  run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 42 variables.
NOTE: DATA statement used (Total process time):
      real time           0.46 seconds
      cpu time            0.43 seconds
      

1113  
1114  * moving sum of quarterly loss;
1115  data fundq_clean; set fundq_clean;
1116      if niq <=0 then lossq = 1 ; else lossq = 0;
1117  run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 43 variables.
NOTE: DATA statement used (Total process time):
      real time           0.19 seconds
      cpu time            0.18 seconds
      

1118  proc sort data=fundq_clean; by gvkey datadate; run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 43 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.28 seconds
      cpu time            0.42 seconds
      

1119  proc expand data=fundq_clean out=fundq_clean;
1120      by gvkey ;
1121      id datadate;
1122      convert lossq = sum_lossq12 / transformout=(movsum 16);
1123      convert niq = ma_niq12 / transformout=(movave 16);
1124      convert ibq = sd_niq12 / transformout=(movstd 16);
1125      convert roaq = sd_roaq12 / transformout=(movstd 16);
1126  run;

WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=009879
WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=010673
WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=013260
WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=013530
WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=013938
WARNING: The variable niq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ibq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable roaq has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=060976
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 47 variables.
NOTE: PROCEDURE EXPAND used (Total process time):
      real time           1.47 seconds
      cpu time            1.46 seconds
      

1127  data fundq_clean; set fundq_clean;
1128      drop datadate;
1129  run;

NOTE: There were 1012247 observations read from the data set WORK.FUNDQ_CLEAN.
NOTE: The data set WORK.FUNDQ_CLEAN has 1012247 observations and 46 variables.
NOTE: DATA statement used (Total process time):
      real time           0.21 seconds
      cpu time            0.20 seconds
      

1130  
1131  * funda vars;
1132  data funda_clean;
1133      set rawdata.comp_funda_clean2020;
1134      if at>0 & at_l>0;
1135      asize   = log(at);
1136      asize_l = log(at_l);
1137      bm_ann = bm;
1138      roa2 = ib_l/at_l;
1139      if ni < 0 then loss_a = 1; else loss_a = 0;
1140      where datadate ne . and at>0;
1141      label asize = "Log(AT)"
1142      asize_l = "Log(AT_l)" ;
1143  run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      272 at 1138:16   
NOTE: There were 182044 observations read from the data set RAWDATA.COMP_FUNDA_CLEAN2020.
      WHERE (datadate not = .) and (at>0);
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 118 variables.
NOTE: DATA statement used (Total process time):
      real time           0.09 seconds
      cpu time            0.09 seconds
      

1144  proc sort data=funda_clean nodupkey ; by gvkey fyear; run;

NOTE: There were 181286 observations read from the data set WORK.FUNDA_CLEAN.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 118 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.15 seconds
      cpu time            0.20 seconds
      

1145  
1146  proc expand data=funda_clean out=funda_clean;
1147      by gvkey;
1148      id fyear;
1149      convert loss_a = sum_loss_a5 / transformout=(movsum 10);
1150      convert roa2 = ma_roa5 / transformout=(movstd 10);
1151      convert ib = ma_ni5 / transformout=(movstd 10);
1152  run;

WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=009879
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=012161
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=013260
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=013530
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=028379
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=030719
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=031810
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=065561
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=065844
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=066707
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=110320
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
WARNING: The variable ib has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=129631
WARNING: The variable roa2 has only 0 nonmissing observations, which is too few to apply the 
         conversion method. The result series is set to missing.
NOTE: The above message was for the following BY group:
      Global Company Key=144564
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 121 variables.
NOTE: PROCEDURE EXPAND used (Total process time):
      real time           0.56 seconds
      cpu time            0.56 seconds
      

1153  
1154  * additional funda vars;
1155  data funda_add; set compa.funda_1950_2021;
1156      keep gvkey datadate intan ;
1157  run;

NOTE: There were 861623 observations read from the data set COMPA.FUNDA_1950_2021.
NOTE: The data set WORK.FUNDA_ADD has 861623 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.14 seconds
      cpu time            0.12 seconds
      

1158  proc sort data=funda_add nodupkey; by gvkey datadate; run;

NOTE: There were 861623 observations read from the data set WORK.FUNDA_ADD.
NOTE: 307572 observations with duplicate key values were deleted.
NOTE: The data set WORK.FUNDA_ADD has 554051 observations and 3 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.06 seconds
      cpu time            0.12 seconds
      

1159  
1160  data funda_clean;
1161      merge funda_clean(in=a) funda_add(in=b);
1162      by gvkey datadate;
1163      if a;
1164  run;

NOTE: There were 181286 observations read from the data set WORK.FUNDA_CLEAN.
NOTE: There were 554051 observations read from the data set WORK.FUNDA_ADD.
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 122 variables.
NOTE: DATA statement used (Total process time):
      real time           0.16 seconds
      cpu time            0.15 seconds
      

1165  
1166  * calculate firm age ;
1167  data funda_clean ;
1168      set funda_clean;
1169      by gvkey;
1170      if first.gvkey then
1171          firm_age=0;
1172      firm_age + 1;
1173  run;

NOTE: There were 181286 observations read from the data set WORK.FUNDA_CLEAN.
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 123 variables.
NOTE: DATA statement used (Total process time):
      real time           0.10 seconds
      cpu time            0.09 seconds
      

1174  proc sort data=funda_clean; by gvkey fyear;  run;

NOTE: There were 181286 observations read from the data set WORK.FUNDA_CLEAN.
NOTE: The data set WORK.FUNDA_CLEAN has 181286 observations and 123 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.15 seconds
      cpu time            0.20 seconds
      

1175  
1176  * Calculate the mean, median, and standard deviation by industry ;
1177  proc sql;
1178      create table funda_clean as
1179      select  *,
1180              mean(firm_age) as ind_mean_firm_age label="Industry mean firm age",
1181              median(firm_age) as ind_med_firm_age label="Industry median firm age",
1182              std(firm_age) as ind_std_firm_age label="Industry Std firm age"
1183      from    funda_clean
1184      group by sic2, fyear
1185      order by gvkey, fyear;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.FUNDA_CLEAN created, with 181286 rows and 126 columns.

1186  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.37 seconds
      cpu time            0.51 seconds
      

1187  
1188  data StateName;
1189      set rawdata.firmStateName;
1190  run;

NOTE: There were 41696 observations read from the data set RAWDATA.FIRMSTATENAME.
NOTE: The data set WORK.STATENAME has 41696 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

1191  
1192  proc sql;
1193      create table Analysis as
1194      select  a.*,b.*,
1195              c.StateName label="Firm HQ State", c.ST label="State",
1196              d.at, d.at_l, d.sale, d.sale_l, d.ni, d.ib, d.ibc,
1197              d.firm_age, d.ind_mean_firm_age, d.ind_std_firm_age, d.ind_med_firm_age,
1198              d.revt, d.revt_l, d.ceq, d.datadate as datadate_ann, d.xrd, d.intan,
1199              d.ma_roa5, d.ma_ni5, d.sum_loss_a5
1200      from    Analysis as a
1201      left join fundq_clean as b
1202          on  a.gvkey=b.gvkey and a.rdq=b.rdq
1203      left join StateName as c
1204          on  a.gvkey=c.gvkey
1205      left join funda_clean as d
1206          on  a.gvkey=d.gvkey and a.fyearq=d.fyear ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable fyearq already exists on file WORK.ANALYSIS.
WARNING: Variable fqtr already exists on file WORK.ANALYSIS.
WARNING: Variable fyr already exists on file WORK.ANALYSIS.
WARNING: Variable rdq already exists on file WORK.ANALYSIS.
WARNING: Variable dlcq already exists on file WORK.ANALYSIS.
WARNING: Variable dlttq already exists on file WORK.ANALYSIS.
WARNING: Variable ibq already exists on file WORK.ANALYSIS.
WARNING: Variable ltq already exists on file WORK.ANALYSIS.
WARNING: Variable niq already exists on file WORK.ANALYSIS.
WARNING: Variable oiadpq already exists on file WORK.ANALYSIS.
WARNING: Variable oibdpq already exists on file WORK.ANALYSIS.
WARNING: Variable ppegtq already exists on file WORK.ANALYSIS.
WARNING: Variable saleq already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 50545 rows and 351 columns.

1207  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           2.30 seconds
      cpu time            2.89 seconds
      

1208  proc sql;
1209      create table Analysis as
1210      select  *,
1211              max(firm_age) as firm_age2
1212      from    Analysis
1213      group by cid, gvkey, year(datadate)
1214      order by cid, pairid, gvkey, rdq;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 50545 rows and 352 columns.

1215  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.34 seconds
      cpu time            1.68 seconds
      

1216  
1217  proc sql;
1218      create table Analysis as
1219      select  *,
1220              mean(firm_age) as ind_mean_firm_age2 label="Industry mean firm age",
1221              median(firm_age) as ind_med_firm_age2 label="Industry median firm age",
1222              std(firm_age) as ind_std_firm_age2 label="Industry Std firm age"
1223      from    Analysis
1224      group by cid, sic2
1225      order by cid, pairid, gvkey, rdq;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 50545 rows and 355 columns.

1226  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.26 seconds
      cpu time            1.57 seconds
      

1227  
1228  * calendar quarter ;
1229  data Analysis; set Analysis;
1230      calyear = year(datadate_ann);
1231      if calyear = . then calyear = year(fqenddt);
1232      calqtr = qtr(datadate);
1233  run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      3545 at 1230:15   126 at 1231:35    
NOTE: There were 50545 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 50545 observations and 357 variables.
NOTE: DATA statement used (Total process time):
      real time           0.32 seconds
      cpu time            0.32 seconds
      

1234  
1235  * compute the average inst ownership over the fiscal year;
1236  proc sql;
1237      create table Analysis as
1238      select  *,
1239              avg(ior) as avg_ior label="Average Qtr IOR" format comma8.4
1240      from    Analysis
1241      group by gvkey, fyearq
1242      order by cid, gvkey, rdq;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 50545 rows and 358 columns.

1243  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.37 seconds
      cpu time            1.73 seconds
      

1244  data Analysis;
1245      retain gvkey fyearq fqtr rdq datadate ANNOUNCE_DATE treated post qd_rel cid pairid qd;
1246      set Analysis;
1247      if cmiss (of relstkpick1 ) eq 0;
1248  run;

NOTE: There were 50545 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32928 observations and 358 variables.
NOTE: DATA statement used (Total process time):
      real time           0.26 seconds
      cpu time            0.25 seconds
      

1249  
1250  
1251  
1252  /* ************************************************************************ */
1253  * make some vars to check the number of non-missing Relstkpick ;
1254  /* ************************************************************************ */
1255  * COUNTER is a cummulative number: 0,1,2,3,4,5 ;
1256  proc sort data=Analysis; by cid gvkey post; run;

NOTE: There were 32928 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32928 observations and 358 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.34 seconds
      cpu time            0.34 seconds
      

1257  data Analysis;
1258      set Analysis;
1259      by cID gvkey post;
1260      if first.post then COUNTER=0;
1261      COUNTER+(Relstkpick1 ne .);
1262  run;

NOTE: There were 32928 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32928 observations and 359 variables.
NOTE: DATA statement used (Total process time):
      real time           0.21 seconds
      cpu time            0.21 seconds
      

1263  
1264  proc sql;
1265      create table Analysis as
1266      select *,
1267          max(COUNTER) as COUNTER_BY_POST
1268      from Analysis
1269      group by cID, gvkey, post
1270      order by cid, gvkey, qd_rel ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32928 rows and 360 columns.

1271  
1272      create table Analysis as
1273      select *,
1274          min(post) as MIN_POST,
1275          max(post) as MAX_POST,
1276          min(COUNTER_BY_POST) as MIN_NOBS_PRE_POST
1277      from Analysis
1278      group by cID, gvkey
1279      order by cid, gvkey, qd_rel ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32928 rows and 363 columns.

1280  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.41 seconds
      cpu time            1.71 seconds
      

1281  proc sort data=Analysis ; by cID PairID treated gvkey datadate; run;

NOTE: There were 32928 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32928 observations and 363 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.33 seconds
      cpu time            0.34 seconds
      

1282  proc sort data=Analysis nodupkey; by cID treated gvkey datadate; run;

NOTE: There were 32928 observations read from the data set WORK.ANALYSIS.
NOTE: 456 observations with duplicate key values were deleted.
NOTE: The data set WORK.ANALYSIS has 32472 observations and 363 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.34 seconds
      cpu time            0.34 seconds
      

1283  
1284  * destring SIC;
1285  data Analysis;  set Analysis;   sic_num = input(sic, 8.); label sic_num="Standard Industry
1285! Classification Code"; drop sic; run;

NOTE: There were 32472 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32472 observations and 362 variables.
NOTE: DATA statement used (Total process time):
      real time           0.21 seconds
      cpu time            0.21 seconds
      

1286  data Analysis;  set Analysis;   rename sic_num = sic; run;

NOTE: There were 32472 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32472 observations and 362 variables.
NOTE: DATA statement used (Total process time):
      real time           0.21 seconds
      cpu time            0.22 seconds
      

1287  proc sort data=Analysis nodupkey; by cid gvkey datadate; run;

NOTE: There were 32472 observations read from the data set WORK.ANALYSIS.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.ANALYSIS has 32472 observations and 362 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.33 seconds
      cpu time            0.31 seconds
      

1288  
1289  
1290  /* ************************************************************************ */
1291  /* ***********************  PART 3: OTHER DATASET  ************************ */
1292  /* ************************************************************************ */
1293  * Analyst forecast and Analyst following;
1294  data afc; set rawdata.afc_fundq;
1295      keep gvkey fyearq datadate rdq numest lnanalys repdats ryear ;
1296      lnanalys = log(1+numest);
1297      if lnanalys ne . ;
1298      ryear = year(repdats);
1299  run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      480890 at 1296:16   480890 at 1296:21   
NOTE: There were 988699 observations read from the data set RAWDATA.AFC_FUNDQ.
NOTE: The data set WORK.AFC has 507809 observations and 8 variables.
NOTE: DATA statement used (Total process time):
      real time           0.11 seconds
      cpu time            0.11 seconds
      

1300  proc sort data=afc nodupkey ; by gvkey repdats; run;

NOTE: There were 507809 observations read from the data set WORK.AFC.
NOTE: 1183 observations with duplicate key values were deleted.
NOTE: The data set WORK.AFC has 506626 observations and 8 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.05 seconds
      cpu time            0.10 seconds
      

1301  
1302  proc sql;
1303      create table afc as
1304      select  distinct gvkey, ryear, datadate,
1305              max(numest) as numest_max label="Max #Analyst (year)",
1306              max(lnanalys) as lnanalys_max label="Max #LnAnalyst (year)"
1307      from    afc
1308      group by gvkey, ryear
1309      order by gvkey, datadate;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.AFC created, with 506626 rows and 5 columns.

1310  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.18 seconds
      cpu time            0.26 seconds
      

1311  
1312  * Stock illiquidity (AIM);
1313  data aim; set rawdata.aim; run;

NOTE: There were 649518 observations read from the data set RAWDATA.AIM.
NOTE: The data set WORK.AIM has 649518 observations and 9 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds
      

1314  proc sort data=aim nodupkey; by gvkey datadate; run;

NOTE: There were 649518 observations read from the data set WORK.AIM.
NOTE: 374 observations with duplicate key values were deleted.
NOTE: The data set WORK.AIM has 649144 observations and 9 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.06 seconds
      cpu time            0.15 seconds
      

1315  
1316  * Price synchronicity (Morck et al 2002);
1317  data psynch ; set rawdata.pinfo_qtr_retx6d; run;

NOTE: There were 515792 observations read from the data set RAWDATA.PINFO_QTR_RETX6D.
NOTE: The data set WORK.PSYNCH has 515792 observations and 9 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

1318  proc sort data=psynch; by gvkey fyear fqtr; run;

NOTE: There were 515792 observations read from the data set WORK.PSYNCH.
NOTE: The data set WORK.PSYNCH has 515792 observations and 9 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.05 seconds
      cpu time            0.12 seconds
      

1319  data psynch; set psynch;
1320      by gvkey fyear fqtr;
1321      if last.fqtr;
1322  run;

NOTE: There were 515792 observations read from the data set WORK.PSYNCH.
NOTE: The data set WORK.PSYNCH has 515774 observations and 9 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds
      

1323  
1324  * the Bushee's IICLASS data;
1325  data io_class;
1326      set rawdata.io_class2022qtr;
1327      rqtr = qtr(rdate);
1328      ryear = year(rdate);
1329  run;

NOTE: There were 737259 observations read from the data set RAWDATA.IO_CLASS2022QTR.
NOTE: The data set WORK.IO_CLASS has 737259 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.07 seconds
      

1330  
1331  * Financial constraints;
1332  data constraints; set rawdata.constraints; run;

NOTE: There were 162789 observations read from the data set RAWDATA.CONSTRAINTS.
NOTE: The data set WORK.CONSTRAINTS has 162789 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

1333  
1334  * Opacity;
1335  data AFERR;
1336      set rawdata.AFERR;
1337      fpeyear = year(FPEDATS);
1338      drop fyear;
1339  run;

NOTE: There were 124683 observations read from the data set RAWDATA.AFERR.
NOTE: The data set WORK.AFERR has 124683 observations and 14 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

1340  proc sort data=AFERR nodupkey; by gvkey fpeyear; run;

NOTE: There were 124683 observations read from the data set WORK.AFERR.
NOTE: 14 observations with duplicate key values were deleted.
NOTE: The data set WORK.AFERR has 124669 observations and 14 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

1341  data AFERR; set AFERR; drop fpeyear; run;

NOTE: There were 124669 observations read from the data set WORK.AFERR.
NOTE: The data set WORK.AFERR has 124669 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

1342  
1343  * Ivol quarterly;
1344  data retvol; set rawdata.retvolqtr_112824;run;

NOTE: There were 519328 observations read from the data set RAWDATA.RETVOLQTR_112824.
NOTE: The data set WORK.RETVOL has 519328 observations and 7 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

1345  proc sort data=retvol nodupkey; by gvkey enddt; run;

NOTE: There were 519328 observations read from the data set WORK.RETVOL.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.RETVOL has 519328 observations and 7 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.04 seconds
      cpu time            0.12 seconds
      

1346  
1347  * abnnormal trading volume;
1348  data abvolume; set rawdata.abvolume; run;

NOTE: There were 747275 observations read from the data set RAWDATA.ABVOLUME.
NOTE: The data set WORK.ABVOLUME has 747275 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.01 seconds
      

1349  proc sort data=abvolume nodupkey; by gvkey fyearq fqtr; run;

NOTE: There were 747275 observations read from the data set WORK.ABVOLUME.
NOTE: 29080 observations with duplicate key values were deleted.
NOTE: The data set WORK.ABVOLUME has 718195 observations and 6 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.06 seconds
      cpu time            0.12 seconds
      

1350  
1351  * CAR at meeting dates to activism data;
1352  data car_meetingdt1; set rawdata.car_meetingdt_capm_00;
1353      rename car = car_meeting00;
1354      label car = "AR[0] Meeting dt";
1355  run;

NOTE: There were 1826 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_00.
NOTE: The data set WORK.CAR_MEETINGDT1 has 1826 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1356  proc sort data=car_meetingdt1 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1826 observations read from the data set WORK.CAR_MEETINGDT1.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT1 has 1826 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1357  
1358  data car_meetingdt2; set rawdata.car_meetingdt_capm_01;
1359      rename car = car_meeting01;
1360      label car = "CAR[0+1] Meeting dt";
1361  run;

NOTE: There were 1826 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_01.
NOTE: The data set WORK.CAR_MEETINGDT2 has 1826 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1362  proc sort data=car_meetingdt2 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1826 observations read from the data set WORK.CAR_MEETINGDT2.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT2 has 1826 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1363  
1364  data car_meetingdt3; set rawdata.car_meetingdt_capm_11_round2;
1365      rename car = car_meeting11;
1366      label car = "CAR[-1+1] Meeting dt";
1367  run;

NOTE: There were 1846 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_11_ROUND2.
NOTE: The data set WORK.CAR_MEETINGDT3 has 1846 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1368  proc sort data=car_meetingdt3 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1846 observations read from the data set WORK.CAR_MEETINGDT3.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT3 has 1846 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds
      

1369  
1370  data car_meetingdt4; set rawdata.car_meetingdt_capm_17;
1371      rename car = car_meeting17;
1372      label car = "CAR[+1+7] Meeting dt";
1373  run;

NOTE: There were 1826 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_17.
NOTE: The data set WORK.CAR_MEETINGDT4 has 1826 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1374  proc sort data=car_meetingdt4 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1826 observations read from the data set WORK.CAR_MEETINGDT4.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT4 has 1826 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1375  
1376  data car_meetingdt5; set rawdata.car_meetingdt_capm_27_round2;
1377      rename car = car_meeting27;
1378      label car = "CAR[+2+7] Meeting dt";
1379  run;

NOTE: There were 1846 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_27_ROUND2.
NOTE: The data set WORK.CAR_MEETINGDT5 has 1846 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1380  proc sort data=car_meetingdt5 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1846 observations read from the data set WORK.CAR_MEETINGDT5.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT5 has 1846 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1381  
1382  data car_meetingdt6; set rawdata.car_meetingdt_capm_214;
1383      rename car = car_meeting214;
1384      label car = "CAR[+2+14] Meeting dt";
1385  run;

NOTE: There were 1826 observations read from the data set RAWDATA.CAR_MEETINGDT_CAPM_214.
NOTE: The data set WORK.CAR_MEETINGDT6 has 1826 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1386  proc sort data=car_meetingdt6 nodupkey; by pairid treated gvkey ANNOUNCE_DATE ; run;

NOTE: There were 1826 observations read from the data set WORK.CAR_MEETINGDT6.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_MEETINGDT6 has 1826 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1387  
1388  * compute the sum of Large and Small MFOR immediately before 13D;
1389  data mfor_13d; set rawdata.mfor_13d; run;

NOTE: There were 856 observations read from the data set RAWDATA.MFOR_13D.
NOTE: The data set WORK.MFOR_13D has 856 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1390  proc sort data=mfor_13d nodupkey; by gvkey CAMPAIGN_ID; run;

NOTE: There were 856 observations read from the data set WORK.MFOR_13D.
NOTE: 4 observations with duplicate key values were deleted.
NOTE: The data set WORK.MFOR_13D has 852 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1391  
1392  * Investor Relation (IR) data;
1393  data ir;  set rawdata.ir2_022225_ext_pre; run;

NOTE: There were 90229 observations read from the data set RAWDATA.IR2_022225_EXT_PRE.
NOTE: The data set WORK.IR has 90229 observations and 32 variables.
NOTE: DATA statement used (Total process time):
      real time           0.08 seconds
      cpu time            0.01 seconds
      

1394  data ir_cp; set rawdata.ir2_022225_cp; run;

NOTE: There were 124238 observations read from the data set RAWDATA.IR2_022225_CP.
NOTE: The data set WORK.IR_CP has 124238 observations and 36 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
      

1394!                                                 * event type to "CP" only ;
1395  data ir_cs; set rawdata.ir2_022225_cs; run;

NOTE: There were 21768 observations read from the data set RAWDATA.IR2_022225_CS.
NOTE: The data set WORK.IR_CS has 21768 observations and 36 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
      

1395!                                                 * event type to "CS" only ;
1396  data ir_cpcs; set rawdata.ir2_022225_cpcs; run;

NOTE: There were 132403 observations read from the data set RAWDATA.IR2_022225_CPCS.
NOTE: The data set WORK.IR_CPCS has 132403 observations and 36 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

1396!                                                 * event type to "CP,CS" only;
1397  proc sql;
1398      create table ir as
1399      select  a.*,
1400              b.ir_dum as ir_dum_cp, b.ir_freq_adj_cp, b.ir_freq_adj_cp3, b.ir_freq_adj_cp5,
1400! b.ir_freq_adj_cp7,
1401              c.ir_dum as ir_dum_cs, c.ir_freq_adj_cs, c.ir_freq_adj_cs3, c.ir_freq_adj_cs5,
1401! c.ir_freq_adj_cs7,
1402              d.ir_dum as ir_dum_cpcs, d.ir_freq_adj_cpcs, d.ir_freq_adj_cpcs3,
1402! d.ir_freq_adj_cpcs5, d.ir_freq_adj_cpcs7, d.ir_freq as ir_freq_cpcs
1403      from ir as a left join ir_cp as b on a.gvkey=b.gvkey and a.qd=b.qd
1404      left join ir_cs as c on a.gvkey=c.gvkey and a.qd=c.qd
1405      left join ir_cpcs as d on a.gvkey=d.gvkey and a.qd=d.qd ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.IR created, with 90229 rows and 48 columns.

1406  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.20 seconds
      cpu time            0.20 seconds
      

1407  proc sort data=ir ; by gvkey year date; run;

NOTE: There were 90229 observations read from the data set WORK.IR.
NOTE: The data set WORK.IR has 90229 observations and 48 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.03 seconds
      cpu time            0.04 seconds
      

1408  
1409  * experience level of proxy solicitors;
1410  data advisory; set rawdata.advisory; run;

NOTE: There were 9262 observations read from the data set RAWDATA.ADVISORY.
NOTE: The data set WORK.ADVISORY has 9262 observations and 12 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1411  proc sort data=advisory nodupkey; by CAMPAIGN_ID; run;

NOTE: There were 9262 observations read from the data set WORK.ADVISORY.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.ADVISORY has 9262 observations and 12 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1412  
1413  * Insider Ownership ;
1414  data insider; set rawdata.insider; run;

NOTE: There were 48632 observations read from the data set RAWDATA.INSIDER.
NOTE: The data set WORK.INSIDER has 48632 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1415  
1416  * Solicitor rank ;
1417  data solicitor_rank; set rawdata.solicitor_rank; run;

NOTE: There were 2386 observations read from the data set RAWDATA.SOLICITOR_RANK.
NOTE: The data set WORK.SOLICITOR_RANK has 2386 observations and 17 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds
      

1418  proc sort nodupkey; by CAMPAIGN_ID; run;

NOTE: There were 2386 observations read from the data set WORK.SOLICITOR_RANK.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.SOLICITOR_RANK has 2386 observations and 17 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

1419  
1420  * CAR around private meeting (IR) code ;
1421  data car_ir; set rawdata.car_ir_capm__0_3; run;

NOTE: There were 123000 observations read from the data set RAWDATA.CAR_IR_CAPM__0_3.
NOTE: The data set WORK.CAR_IR has 123000 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.00 seconds
      

1422  proc sort nodupkey; by gvkey year evt_qtr ; run;

NOTE: There were 123000 observations read from the data set WORK.CAR_IR.
NOTE: 0 observations with duplicate key values were deleted.
NOTE: The data set WORK.CAR_IR has 123000 observations and 10 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
      

1423  
1424  * Voting Analytics data ;
1425  data vote;set rawdata.vavote;run;

NOTE: There were 20101 observations read from the data set RAWDATA.VAVOTE.
NOTE: The data set WORK.VOTE has 20101 observations and 46 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds
      

1426  proc sort data=vote_pilot nodupkey; by gvkey MeetingDate itemOnAgendaID; run;
ERROR: File WORK.VOTE_PILOT.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
1427  
1428  * Merge datasets;


1429  proc sql;
1430      create table Analysis as
1431      select  a.*, b.*
1432      from    Analysis as a left join afc as b
1433      on      a.gvkey=b.gvkey and  a.datadate = b.datadate ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable ryear already exists on file WORK.ANALYSIS.
WARNING: Variable datadate already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 364 columns.

1434  
1435      create table Analysis as
1436      select  a.*, b.insider_own
1437      from    Analysis as a left join insider as b
1438      on      a.gvkey=b.gvkey and a.datadate = b.datadate ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 365 columns.

1439  
1440      create table Analysis as
1441      select  a.*, b.aim, b.ln_oneplusaim, b.ln_aim
1442      from    Analysis as a left join aim as b
1443      on      a.gvkey=b.gvkey and a.datadate = b.datadate;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 368 columns.

1444  
1445      create table Analysis as
1446      select  a.*, b.psynch1,b.psynch2,b.psynch3,b.pinfo1,b.pinfo2,b.pinfo3
1447      from    Analysis as a left join psynch as b
1448      on      a.gvkey=b.gvkey and a.fyearq = b.fyear and a.fqtr=b.fqtr;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 374 columns.

1449  
1450      create table Analysis as
1451      select  a.*, b.*
1452      from    Analysis as a left join io_class as b
1453      on      a.gvkey=b.gvkey and a.fyearq=b.ryear and a.fqtr=b.rqtr ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable permno already exists on file WORK.ANALYSIS.
WARNING: Variable rdate already exists on file WORK.ANALYSIS.
WARNING: Variable ryear already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 383 columns.

1454  
1455      create table Analysis as
1456      select  a.*, b.kzindex,b.saindex,b.wwindex
1457      from    Analysis as a left join constraints as b
1458      on      a.gvkey=b.gvkey and a.fyearq=b.fyear+1 ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 386 columns.

1459  
1460      create table Analysis as
1461      select  a.*, b.abvolume, b.volumeturn
1462      from    Analysis as a left join abvolume as b
1463      on      a.gvkey=b.gvkey and a.fyearq=b.fyearq and a.fqtr=b.fqtr;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 388 columns.

1464  
1465      create table Analysis as
1466      select  a.*, b.*
1467      from    Analysis as a left join retvol as b
1468      on      a.gvkey=b.gvkey and a.rdq=b.enddt;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 394 columns.

1469  
1470      create table Analysis as
1471      select  a.*, b.car_meeting00
1472      from    Analysis as a left join car_meetingdt1 as b
1473      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 395 columns.

1474  
1475      create table Analysis as
1476      select  a.*, b.car_meeting01
1477      from    Analysis as a left join car_meetingdt2 as b
1478      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 396 columns.

1479  
1480      create table Analysis as
1481      select  a.*, b.car_meeting11
1482      from    Analysis as a left join car_meetingdt3 as b
1483      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 397 columns.

1484  
1485      create table Analysis as
1486      select  a.*, b.car_meeting17
1487      from    Analysis as a left join car_meetingdt4 as b
1488      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 398 columns.

1489  
1490      create table Analysis as
1491      select  a.*, b.car_meeting27
1492      from    Analysis as a left join car_meetingdt5 as b
1493      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 399 columns.

1494  
1495      create table Analysis as
1496      select  a.*, b.car_meeting214
1497      from    Analysis as a left join car_meetingdt6 as b
1498      on      a.gvkey=b.gvkey and a.pairid=b.pairid  ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 400 columns.

1499  
1500      create table Analysis as
1501      select  a.*, b.*
1502      from    Analysis as a left join AFERR as b
1503      on      a.gvkey=b.gvkey and
1504              year(a.datadate)=year(b.FPEDATS) ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 412 columns.

1505  
1506      create table Analysis as
1507      select  a.*, b.*
1508      from    Analysis as a left join mfor_13d as b
1509      on      a.gvkey=b.gvkey and a.CAMPAIGN_ID=b.CAMPAIGN_ID ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable campaign_id already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 32472 rows and 420 columns.

1510  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           8.08 seconds
      cpu time            8.87 seconds
      

1511  proc sort data=Analysis nodupkey; by cid gvkey rdq; run;

NOTE: There were 32472 observations read from the data set WORK.ANALYSIS.
NOTE: 49 observations with duplicate key values were deleted.
NOTE: The data set WORK.ANALYSIS has 32423 observations and 420 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.42 seconds
      cpu time            0.43 seconds
      

1512  
1513  * calcualte the avg pre- and post-;
1514  proc sql;
1515      create table Analysis as
1516      select *, avg(relstkpick1) as _relstkpick1
1517      from Analysis
1518      group by pairid, gvkey, post
1519      order by pairid, gvkey, qd ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32423 rows and 421 columns.

1520  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.93 seconds
      cpu time            1.25 seconds
      

1521  
1522  data Analysis;
1523      set Analysis;
1524      if Post eq 0 then _relstkpick1_pre = _relstkpick1; else _relstkpick1_pre = . ;
1525      if Post eq 1 then _relstkpick1_pos = _relstkpick1; else _relstkpick1_pos = . ;
1526  run;

NOTE: There were 32423 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32423 observations and 423 variables.
NOTE: DATA statement used (Total process time):
      real time           0.29 seconds
      cpu time            0.29 seconds
      

1527  
1528  proc sql;
1529      create table Analysis as
1530      select *, max(_relstkpick1_pre) as relstkpick1_pre, max(_relstkpick1_pos) as
1530! relstkpick1_pos
1531      from Analysis
1532      group by cid, pairid, gvkey
1533      order by cid, pairid, gvkey, qd ;
NOTE: The query requires remerging summary statistics back with the original data.
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
NOTE: Table WORK.ANALYSIS created, with 32423 rows and 425 columns.

1534  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.92 seconds
      cpu time            1.12 seconds
      

1535  
1536  data Analysis;
1537      set Analysis;
1538      d_relstkpick1 = relstkpick1_pos - relstkpick1_pre;
1539      drop relstkpick1_pos relstkpick1_pre _relstkpick1_pre _relstkpick1_pos _relstkpick1;
1540  run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      2788 at 1538:37   
NOTE: There were 32423 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 32423 observations and 421 variables.
NOTE: DATA statement used (Total process time):
      real time           0.29 seconds
      cpu time            0.29 seconds
      

1541  
1542  * merge data;
1543  proc sql;
1544      create table Analysis as
1545      select  a.*,b.*
1546      from    Analysis as a left join vote as b
1547      on      a.CAMPAIGN_ID = b.CAMPAIGN_ID ;
WARNING: This CREATE TABLE statement recursively references the target table. A consequence of 
         this is a possible data integrity problem.
WARNING: Variable gvkey already exists on file WORK.ANALYSIS.
WARNING: Variable CAMPAIGN_ID already exists on file WORK.ANALYSIS.
WARNING: Variable MEETING_DATE already exists on file WORK.ANALYSIS.
WARNING: Variable CUSIP already exists on file WORK.ANALYSIS.
WARNING: Variable year already exists on file WORK.ANALYSIS.
NOTE: Table WORK.ANALYSIS created, with 77686 rows and 462 columns.

1548  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1.09 seconds
      cpu time            1.29 seconds
      

1549  
1550  data Analysis;
1551      retain cid ANNOUNCE_DATE CAMPAIGN_ID gvkey treated MeetingDate ;
1552      set Analysis;
1553      if IOAfor_total ne . ;
1554      if d_relstkpick1 ne . ;
1555  run;

NOTE: There were 77686 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 47551 observations and 462 variables.
NOTE: DATA statement used (Total process time):
      real time           0.50 seconds
      cpu time            0.50 seconds
      

1556  
1557  * drop unwanted vars;
1558  data Analysis ;
1559      set Analysis;
1560      drop outcome_desc company_fee_desc dissident_fee_desc dir_off_own_desc
1560! campaign_synopsis campaign_title iso_country
1561      targetname: targetfin: targetlegal: targetpr1 targetpr2 targetpr3  actfinanc: actlegal:
1561!  actpr: targetproxy2 targetproxy3 ;
1562  run;

NOTE: There were 47551 observations read from the data set WORK.ANALYSIS.
NOTE: The data set WORK.ANALYSIS has 47551 observations and 420 variables.
NOTE: DATA statement used (Total process time):
      real time           0.23 seconds
      cpu time            0.25 seconds
      

1563  
1564  
1565  * Export data to Stata file;
1566  %let FFP =
1566! "C:\Users\hpham13\Projects\mf_activism\empirical\1_code\final_package_acceptance\assembledd
1566! ata_vote1.dta";
1567  proc export data = Analysis outfile = &FFP. replace;
1567!                                                      run;

NOTE: The export data set has 47551 observations and 420 variables.
NOTE: "C:\Users\hpham13\Projects\mf_activism\empirical\1_code\final_package_acceptance\assembledd
      ata_vote1.dta" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           0.24 seconds
      cpu time            0.23 seconds
      

1568  
1569  proc printto;
1570  run;

